#include <iostream>
using std::cout;
using std::endl;
//函数模板和函数模板之间的重载
template <class T>
T add(T t1, T t2){
    cout << "template1" << endl;
    return t1 + t2;
}

template <class T1, class T2>
T1 add(T1 t1, T2 t2){
    cout << "template2" << endl;
    return t1 + t2;
}

void test(){
    double x = 9.1;
    int y = 10;
    cout << add(x, y) << endl;
    cout << add(y, x) << endl;

    //显示实例化
    cout << add<int,int>(x,y) << endl; //模板二  （1）
    cout << add<int>(x,y) << endl; //模板一   （2）
    cout << add<int>(y,x) << endl; //模板二   （3）
}

int main()
{
    test();
    return 0;
}

